package com.cn.design.adapter.interfaces;

/**
 * @author: zhangyiting
 * @description: 当不需要全部实现接口提供的方法时，可以设计一个适配器抽象类实现接口，并为接口中的每个方法提供默认方法，
 * 抽象类的子类就可以有选择的覆盖父类的某些方法实现需求，它适用于一个接口不想使用所有的方法的情况。
 *
 * 但是，在Java8之后，接口中可以有default方法，就不需要这样的缺省适配器模式了。所以，可以看到很多架构在到Java-8之后，xxxAdapter标记为过时。
 *
 * @createDate: Created in 2022/7/7 22:40
 * @version: 1.0
 */
//缺省适配器模式测试类
public class DefaultAdapterTest {
    public static void main(String[] args) {
        // 1、原来要实现所有操作类的操作
        Operator operator1 = new Operator();
        operator1.addOperation(new SampleOperation() {
            @Override
            public void Opertion1() {
                System.out.println("操作一");
            }

            @Override
            public void Opertion2() {

            }

            @Override
            public void Opertion3() {

            }

            @Override
            public void Opertion4() {

            }

            @Override
            public void Opertion5() {

            }
        });
        operator1.operation1();

        // 2、使用缺省适配器只需要实现需要用到的接口方法
        Operator operator2 = new Operator();
        operator2.addOperation(new DefaultAdapter() {
            @Override
            public void Opertion1() {
                System.out.println("缺省操作1");
            }
        });
        operator2.operation1();
    }
}